package plp.imperative2.expression;

public class Periodo {

	private Data data1;
	private Data data2;

	private Duracao duracao1;
	private Duracao duracao2;
	private boolean eData;

	public Periodo(String item1, String item2) {
		if (item1.charAt(1) == '[') {
			String str1 = item1.substring(1, item1.length());
			String str2 = item2.substring(0, item2.length() - 1);

			this.duracao1 = new Duracao(str1);
			this.duracao2 = new Duracao(str2);

			eData = false;
		} else {
			String str1 = item1.toString().replace("[", "").replace("]", "");
			String str2 = item2.toString().replace("[", "").replace("]", "");
			this.data1 = new Data(str1);
			this.data2 = new Data(str2);

			eData = true;
		}

	}

	public Data getData1() {
		return data1;
	}

	public void setData1(Data data1) {
		this.data1 = data1;
	}

	public Data getData2() {
		return data2;
	}

	public void setData2(Data data2) {
		this.data2 = data2;
	}

	public Duracao getDuracao1() {
		return duracao1;
	}

	public void setDuracao1(Duracao duracao1) {
		this.duracao1 = duracao1;
	}

	public Duracao getDuracao2() {
		return duracao2;
	}

	public void setDuracao2(Duracao duracao2) {
		this.duracao2 = duracao2;
	}

	public boolean getTipoPeriodo() {
		return eData;
	}

	@Override
	public String toString() {
		if (eData) {
			return String.format("[%s - %s]", getData1(), getData2());
		} else {
			return String.format("[%s - %s]", getDuracao1(), getDuracao2());
		}

	}

	@Override
	public boolean equals(Object obj) {
		Periodo periodo = (Periodo) obj;
		if (eData) {
			return this.data1.equals(periodo.data1)
					&& this.data2.equals(periodo.data2);
		}else{
			return this.duracao1.equals(periodo.duracao1)
					&& this.duracao2.equals(periodo.duracao2);
		}
	}

}
